Chicago’s eviction data highlights more variability and higher peaks in eviction rates. The broader spread across different demographic and economic factors suggests that Chicago’s eviction dynamics are influenced by a wider array of systemic issues.

Eviction Rate by Percent Other Population (Other Minorities)

The combined plot illustrates that higher eviction rates tend to cluster in areas with lower percentages of minority population

High eviction rates are more concentrated in areas with lower percentages of populations categorized as “Other.” This suggests that neighborhoods with diverse racial compositions face eviction issues similar to or worse than predominantly Black or Latine neighborhoods.

combined_plotly

Eviction Rate by Percent Black Population

Higher percentages of Black populations correlate with higher eviction rates. This suggests that predominantly Black neighborhoods are more vulnerable to evictions, likely due to historical and ongoing socio-economic disadvantages.

Eviction Rate by Percent Asian Population

Areas with higher percentages of Asian populations generally exhibit lower eviction rates. This indicates that predominantly Asian neighborhoods might have better socio-economic conditions or support systems that help mitigate eviction risks.

Eviction Rate by Percent Latine Population

Higher percentages of Latine populations do not show a consistent pattern with eviction rates. Some areas with significant Latine populations experience high eviction rates, indicating that specific localized factors or economic hardships affect these communities.

Eviction Rate by Grade

Areas with lower grades (C and D) exhibit significantly higher eviction rates compared to higher-graded areas (A and B). This underscores the enduring impact of redlining, where historically marginalized communities continue to face higher eviction risks.

Histogram of Eviction Rate

The histogram reveals that while most areas have lower eviction rates, there are significant pockets with very high rates. This distribution highlights the need to focus resources on the most affected areas to prevent evictions effectively.

Density Plot of Eviction Rate by Grade

Higher ERAP index values are associated with higher eviction rates. This indicates that areas needing more rental assistance also experience higher eviction risks. However, the ERAP index alone does not fully predict eviction rates, there might a need to look other factors that predict eviction.

Eviction Rate by ERAP Index Value

Observation: Higher ERAP index values correlate with higher eviction rates, especially at the higher end of the index.

Difference: The correlation between high ERAP index values and eviction rates is more apparent in Chicago than in Seattle, suggesting that rental assistance programs might be less effective in preventing evictions here.

Eviction Rate by Median Gross Rent

Eviction rates vary significantly across different rent levels. While higher rents might be expected to correlate with higher eviction rates, the data shows that low-rent areas can also have high eviction rates, pointing to broader socio-economic issues affecting housing stability.

LS0tDQp0aXRsZTogIkV2aWN0aW9uIEFuYWx5c2lzIChDaGljYWdvKSINCmF1dGhvcjogIkJlbnlhbWluIFllaW1vIg0KZGF0ZTogImByIFN5cy5EYXRlKClgIg0Kb3V0cHV0OiBvcGVuaW50cm86OmxhYl9yZXBvcnQNCi0tLQ0KDQpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KG9wZW5pbnRybykNCmxpYnJhcnkoaHR0cikNCmxpYnJhcnkoanNvbmxpdGUpDQpsaWJyYXJ5KHNmKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KHJlYWRyKQ0KbGlicmFyeShyZWFkeGwpDQpsaWJyYXJ5KEdHYWxseSkNCmxpYnJhcnkocGxvdGx5KQ0KbGlicmFyeShyZXNoYXBlMikNCmxpYnJhcnkoZ3JpZEV4dHJhKQ0KbGlicmFyeShncmlkKQ0KDQpgYGANCg0KQ2hpY2FnbydzIGV2aWN0aW9uIGRhdGEgaGlnaGxpZ2h0cyBtb3JlIHZhcmlhYmlsaXR5IGFuZCBoaWdoZXIgcGVha3MgaW4gZXZpY3Rpb24gcmF0ZXMuIFRoZSBicm9hZGVyIHNwcmVhZCBhY3Jvc3MgZGlmZmVyZW50IGRlbW9ncmFwaGljIGFuZCBlY29ub21pYyBmYWN0b3JzIHN1Z2dlc3RzIHRoYXQgQ2hpY2FnbydzIGV2aWN0aW9uIGR5bmFtaWNzIGFyZSBpbmZsdWVuY2VkIGJ5IGEgd2lkZXIgYXJyYXkgb2Ygc3lzdGVtaWMgaXNzdWVzLiANCg0KDQpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KIyBMb2FkIGRhdGENCmNoaWNhZ28gPC0gcmVhZF9zZigiY2hpY2Fnb19lcmFwX3JlZF9ldmljIDMuZ2VvanNvbiIpDQoNCiMgSGFuZGxlIG1pc3NpbmcgdmFsdWVzIGJ5IHJlbW92aW5nIHJvd3Mgd2l0aCBOQXMNCmNoaWNhZ29fY2xlYW4gPC0gY2hpY2FnbyB8Pg0KICBmaWx0ZXIoIWlzLm5hKGV2aWN0aW9uX3JhdGUpICYgDQogICAgICAgICAgICFpcy5uYShwZXJjZW50X2Nvc3RfYnVyZGVuZWRfcmVudGVycykgJiANCiAgICAgICAgICAgIWlzLm5hKG1lZGlhbi5ncm9zcy5yZW50KSAmIA0KICAgICAgICAgICAhaXMubmEocGVyY2VudF9ibGFjaykgJiANCiAgICAgICAgICAgIWlzLm5hKHBlcmNlbnRfYXNpYW4pICYgDQogICAgICAgICAgICFpcy5uYShwZXJjZW50X2xhdGluZSkgJiANCiAgICAgICAgICAgIWlzLm5hKHBlcmNlbnRfb3RoZXIpICYgDQogICAgICAgICAgICFpcy5uYShpbmRleF92YWx1ZSkgJiANCiAgICAgICAgICAgIWlzLm5hKHllYXIpICYgDQogICAgICAgICAgICFpcy5uYShjb3VudHlfbmFtZSkpDQpgYGANCg0KYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCg0KIyBQbG90IDE6IFNjYXR0ZXIgUGxvdCBvZiBFdmljdGlvbiBSYXRlIGJ5IFBlcmNlbnQgQmxhY2sgUG9wdWxhdGlvbg0KcGxvdDEgPC0gZ2dwbG90KGNoaWNhZ29fY2xlYW4sIGFlcyh4ID0gcGVyY2VudF9ibGFjaywgeSA9IGV2aWN0aW9uX3JhdGUpKSArDQogIGdlb21fcG9pbnQoY29sb3IgPSAiYmxhY2siLCBhbHBoYSA9IDAuMzUsIHNoYXBlID0gMjEsIHN0cm9rZSA9IDAuNSwgZmlsbCA9ICIjMzhFQjM3IiApICsNCiAgbGFicyh0aXRsZSA9ICJFdmljdGlvbiBSYXRlIGJ5IFBlcmNlbnQgQmxhY2sgUG9wdWxhdGlvbiIsIHggPSAiUGVyY2VudCBCbGFjayBQb3B1bGF0aW9uIiwgeSA9ICJFdmljdGlvbiBSYXRlIHBlciAxMDAwIikgKw0KICBzY2FsZV94X2NvbnRpbnVvdXMobGltaXRzID0gYygwLCAxKSkgKw0KICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBjb2xvciA9ICJibHVlIikgKw0KICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCksIA0KICAgICAgICBheGlzLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCksIA0KICAgICAgICBheGlzLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDgpKQ0KDQojIFBsb3QgMjogU2NhdHRlciBQbG90IG9mIEV2aWN0aW9uIFJhdGUgYnkgUGVyY2VudCBBc2lhbiBQb3B1bGF0aW9uDQpwbG90MiA8LSBnZ3Bsb3QoY2hpY2Fnb19jbGVhbiwgYWVzKHggPSBwZXJjZW50X2FzaWFuLCB5ID0gZXZpY3Rpb25fcmF0ZSkpICsNCiAgZ2VvbV9wb2ludChjb2xvciA9ICJibGFjayIsIGFscGhhID0gMC4zNSwgc2hhcGUgPSAyMSwgc3Ryb2tlID0gMC41LCBmaWxsID0gIiNFNzUwN0MiICkgKw0KICBsYWJzKHRpdGxlID0gIkV2aWN0aW9uIFJhdGUgYnkgUGVyY2VudCBBc2lhbiBQb3B1bGF0aW9uIiwgeCA9ICJQZXJjZW50IEFzaWFuIFBvcHVsYXRpb24iLCB5ID0gIkV2aWN0aW9uIFJhdGUgcGVyIDEwMDAiKSArDQogIHNjYWxlX3hfY29udGludW91cyhsaW1pdHMgPSBjKDAsIDEpKSArDQogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIGNvbG9yID0gImJsdWUiKSArDQogIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSwgDQogICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSwgDQogICAgICAgIGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gOCkpDQoNCg0KIyBQbG90IDM6IFNjYXR0ZXIgUGxvdCBvZiBFdmljdGlvbiBSYXRlIGJ5IFBlcmNlbnQgTGF0aW5lIFBvcHVsYXRpb24NCnBsb3QzIDwtIGdncGxvdChjaGljYWdvX2NsZWFuLCBhZXMoeCA9IHBlcmNlbnRfbGF0aW5lLCB5ID0gZXZpY3Rpb25fcmF0ZSkpICsNCiAgZ2VvbV9wb2ludChjb2xvciA9ICJibGFjayIsIGFscGhhID0gMC4zNSwgc2hhcGUgPSAyMSwgc3Ryb2tlID0gMC41LCBmaWxsID0gIiMxRUNDQzQiICkgKw0KICBsYWJzKHRpdGxlID0gIkV2aWN0aW9uIFJhdGUgYnkgUGVyY2VudCBMYXRpbmUgUG9wdWxhdGlvbiIsIHggPSAiUGVyY2VudCBMYXRpbmUgUG9wdWxhdGlvbiIsIHkgPSAiRXZpY3Rpb24gUmF0ZSBwZXIgMTAwMCIpICsNCiAgc2NhbGVfeF9jb250aW51b3VzKGxpbWl0cyA9IGMoMCwgMSkpICsNCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgY29sb3IgPSAiYmx1ZSIpICsNCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTApLCANCiAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTApLCANCiAgICAgICAgYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSA4KSkNCg0KDQojIFBsb3QgNDogU2NhdHRlciBQbG90IG9mIEV2aWN0aW9uIFJhdGUgYnkgUGVyY2VudCBPdGhlciBQb3B1bGF0aW9uDQpwbG90NCA8LSBnZ3Bsb3QoY2hpY2Fnb19jbGVhbiwgYWVzKHggPSBwZXJjZW50X290aGVyLCB5ID0gZXZpY3Rpb25fcmF0ZSkpICsNCiAgZ2VvbV9wb2ludChjb2xvciA9ICJibGFjayIsIGFscGhhID0gMC4zNSwgc2hhcGUgPSAyMSwgc3Ryb2tlID0gMC41LCBmaWxsID0gIiNDMTJGQjMiICkgKw0KICBsYWJzKHRpdGxlID0gIkV2aWN0aW9uIFJhdGUgYnkgUGVyY2VudCBPdGhlciBQb3B1bGF0aW9uIiwgeCA9ICJQZXJjZW50IE90aGVyIFBvcHVsYXRpb24iLCB5ID0gIkV2aWN0aW9uIFJhdGUgcGVyIDEwMDAiKSArDQogIHNjYWxlX3hfY29udGludW91cyhsaW1pdHMgPSBjKDAsIDEpKSArDQogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIGNvbG9yID0gImJsdWUiKSArDQogIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSwgDQogICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSwgDQogICAgICAgIGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gOCkpDQoNCg0KIyBQbG90IDU6IEJhciBQbG90IG9mIEV2aWN0aW9uIFJhdGUgYnkgR3JhZGUNCnBsb3Q1IDwtIGdncGxvdChjaGljYWdvX2NsZWFuLCBhZXMoeCA9IGdyYWRlLCB5ID0gZXZpY3Rpb25fcmF0ZSwgZmlsbCA9IGdyYWRlKSkgKw0KICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IikgKw0KICBsYWJzKHRpdGxlID0gIkV2aWN0aW9uIFJhdGUgYnkgR3JhZGUiLCB4ID0gIkdyYWRlIiwgeSA9ICJFdmljdGlvbiBSYXRlIikNCg0KIyBQbG90IDY6IEhpc3RvZ3JhbSBvZiBFdmljdGlvbiBSYXRlDQpwbG90NiA8LSBnZ3Bsb3QoY2hpY2Fnb19jbGVhbiwgYWVzKHggPSBldmljdGlvbl9yYXRlKSkgKw0KICBnZW9tX2hpc3RvZ3JhbShiaW53aWR0aCA9IDEsIGZpbGwgPSAiYmx1ZSIsIGNvbG9yID0gImJsYWNrIikgKw0KICBsYWJzKHRpdGxlID0gIkhpc3RvZ3JhbSBvZiBFdmljdGlvbiBSYXRlIiwgeCA9ICJFdmljdGlvbiBSYXRlIiwgeSA9ICJGcmVxdWVuY3kiKQ0KDQojIFBsb3QgNzogRGVuc2l0eSBQbG90IG9mIEV2aWN0aW9uIFJhdGUNCnBsb3Q3IDwtIGdncGxvdChjaGljYWdvX2NsZWFuLCBhZXMoeCA9IGV2aWN0aW9uX3JhdGUsIGZpbGwgPSBncmFkZSkpICsNCiAgZ2VvbV9kZW5zaXR5KGFscGhhID0gMC41KSArDQogIGxhYnModGl0bGUgPSAiRGVuc2l0eSBQbG90IG9mIEV2aWN0aW9uIFJhdGUgYnkgR3JhZGUiLCB4ID0gIkV2aWN0aW9uIFJhdGUiLCB5ID0gIkRlbnNpdHkiKSsNCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTApLCANCiAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTApLCANCiAgICAgICAgYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSA4KSkNCg0KDQojIFBsb3QgODogU2NhdHRlciBQbG90IG9mIEV2aWN0aW9uIFJhdGUgYnkgRVJBUCBJbmRleCBWYWx1ZQ0KcGxvdDggPC0gZ2dwbG90KGNoaWNhZ29fY2xlYW4sIGFlcyh4ID0gaW5kZXhfdmFsdWUsIHkgPSBldmljdGlvbl9yYXRlKSkgKw0KICBnZW9tX3BvaW50KGNvbG9yID0gImJsYWNrIiwgYWxwaGEgPSAwLjM1LCBzaGFwZSA9IDIxLCBzdHJva2UgPSAwLjUsIGZpbGwgPSAiI0VCREM0OSIgKSArDQogIGxhYnModGl0bGUgPSAiRXZpY3Rpb24gUmF0ZSBieSBFUkFQIEluZGV4IFZhbHVlIiwgeCA9ICJFUkFQIEluZGV4IFZhbHVlIiwgeSA9ICJFdmljdGlvbiBSYXRlIikrDQogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIGNvbG9yID0gImJsdWUiKSArDQogIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSwgDQogICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSwgDQogICAgICAgIGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gOCkpDQoNCiMgUGxvdCA5OiBTY2F0dGVyIFBsb3Qgb2YgRXZpY3Rpb24gUmF0ZSBieSBNZWRpYW4gR3Jvc3MgUmVudA0KcGxvdDkgPC0gZ2dwbG90KGNoaWNhZ29fY2xlYW4sIGFlcyh4ID0gbWVkaWFuLmdyb3NzLnJlbnQsIHkgPSBldmljdGlvbl9yYXRlKSkgKw0KICBnZW9tX3BvaW50KGNvbG9yID0gImJsYWNrIiwgYWxwaGEgPSAwLjM1LCBzaGFwZSA9IDIxLCBzdHJva2UgPSAwLjUsIGZpbGwgPSAiI0VCREM0OSIgKSArDQogIGxhYnModGl0bGUgPSAiRXZpY3Rpb24gUmF0ZSBieSBNZWRpYW4gR3Jvc3MgUmVudCIsIHggPSAiTWVkaWFuIEdyb3NzIFJlbnQiLCB5ID0gIkV2aWN0aW9uIFJhdGUiKSArDQogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIGNvbG9yID0gImJsdWUiKSArDQogIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSwgDQogICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSwgDQogICAgICAgIGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gOCkpDQoNCg0KIyBDb21iaW5lIGFsbCByYWNlcyBpbnRvIGEgbG9uZyBmb3JtYXQNCmNoaWNhZ29fbG9uZyA8LSBjaGljYWdvX2NsZWFuIHw+DQogIGdhdGhlcihrZXkgPSAicmFjZXNfbm9uV2hpdGUiLCB2YWx1ZSA9ICJwZXJjZW50X3JhY2VzX25vbldoaXRlIiwgcGVyY2VudF9ibGFjaywgcGVyY2VudF9hc2lhbiwgcGVyY2VudF9sYXRpbmUsIHBlcmNlbnRfb3RoZXIpDQoNCiMgQ3JlYXRlIHRoZSBjb21iaW5lZCBzY2F0dGVyIHBsb3QgdXNpbmcgUGxvdGx5DQpjb21iaW5lZF9wbG90IDwtIGdncGxvdChjaGljYWdvX2xvbmcsIGFlcyh4ID0gcGVyY2VudF9yYWNlc19ub25XaGl0ZSwgeSA9IGV2aWN0aW9uX3JhdGUsICBmaWxsID0gcmFjZXNfbm9uV2hpdGUpKSArDQogIGdlb21fcG9pbnQoIGFscGhhID0gMC4zNSwgc2hhcGUgPSAyMSwgc3Ryb2tlID0gMC41KSArDQogIGdlb21faml0dGVyKGFscGhhID0gMC41MCkgKw0KICBsYWJzKHRpdGxlID0gIkV2aWN0aW9uIFJhdGUgYnkgUGVyY2VudCBQb3B1bGF0aW9uIG9mIEFsbCBSYWNlcyIsIHggPSAiUGVyY2VudCBQb3B1bGF0aW9uIiwgeSA9ICJFdmljdGlvbiBSYXRlIChwZXIgMTAwMCkiKSArDQogIHNjYWxlX3lfY29udGludW91cyhsaW1pdHMgPSBjKDAsNjApKSArDQogIHNjYWxlX3hfY29udGludW91cyhsaW1pdHMgPSBjKDAsIDEpKSsNCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgY29sb3IgPSAiYmx1ZSIpICsNCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTApLCANCiAgICAgICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTApLCANCiAgICAgICAgYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSA4KSkNCg0KY29tYmluZWRfcGxvdGx5IDwtIGdncGxvdGx5KGNvbWJpbmVkX3Bsb3QpDQoNCg0KYGBgDQoNCiMjIyMgRXZpY3Rpb24gUmF0ZSBieSBQZXJjZW50IE90aGVyIFBvcHVsYXRpb24gKE90aGVyIE1pbm9yaXRpZXMpDQoNClRoZSBjb21iaW5lZCBwbG90IGlsbHVzdHJhdGVzIHRoYXQgaGlnaGVyIGV2aWN0aW9uIHJhdGVzIHRlbmQgdG8gY2x1c3RlciBpbiBhcmVhcyB3aXRoIGxvd2VyIHBlcmNlbnRhZ2VzIG9mIG1pbm9yaXR5IHBvcHVsYXRpb24NCg0KSGlnaCBldmljdGlvbiByYXRlcyBhcmUgbW9yZSBjb25jZW50cmF0ZWQgaW4gYXJlYXMgd2l0aCBsb3dlciBwZXJjZW50YWdlcyBvZiBwb3B1bGF0aW9ucyBjYXRlZ29yaXplZCBhcyAiT3RoZXIuIiBUaGlzIHN1Z2dlc3RzIHRoYXQgbmVpZ2hib3Job29kcyB3aXRoIGRpdmVyc2UgcmFjaWFsIGNvbXBvc2l0aW9ucyBmYWNlIGV2aWN0aW9uIGlzc3VlcyBzaW1pbGFyIHRvIG9yIHdvcnNlIHRoYW4gcHJlZG9taW5hbnRseSBCbGFjayBvciBMYXRpbmUgbmVpZ2hib3Job29kcy4NCg0KDQpgYGB7cn0NCg0KY29tYmluZWRfcGxvdGx5DQoNCmBgYA0KDQpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KIyBBcnJhbmdlIHRoZSBmaXJzdCBzZXQgb2YgcGxvdHMgaW4gYSBncmlkDQpncmlkLmFycmFuZ2UoDQogIGFycmFuZ2VHcm9iKA0KICAgIGdyb2JzID0gbGlzdChwbG90MSwgcGxvdDIsIHBsb3QzLCBwbG90NCksIA0KICAgIG5jb2wgPSAyDQogICksDQogIHRvcCA9IHRleHRHcm9iKCJDaGljYWdvIEdyYXBocyIsIGdwID0gZ3Bhcihmb250c2l6ZSA9IDIwLCBmb250ID0gMikpDQopDQpgYGANCg0KDQojIyMjIEV2aWN0aW9uIFJhdGUgYnkgUGVyY2VudCBCbGFjayBQb3B1bGF0aW9uDQoNCkhpZ2hlciBwZXJjZW50YWdlcyBvZiBCbGFjayBwb3B1bGF0aW9ucyBjb3JyZWxhdGUgd2l0aCBoaWdoZXIgZXZpY3Rpb24gcmF0ZXMuIFRoaXMgc3VnZ2VzdHMgdGhhdCBwcmVkb21pbmFudGx5IEJsYWNrIG5laWdoYm9yaG9vZHMgYXJlIG1vcmUgdnVsbmVyYWJsZSB0byBldmljdGlvbnMsIGxpa2VseSBkdWUgdG8gaGlzdG9yaWNhbCBhbmQgb25nb2luZyBzb2Npby1lY29ub21pYyBkaXNhZHZhbnRhZ2VzLg0KDQojIyMjIEV2aWN0aW9uIFJhdGUgYnkgUGVyY2VudCBBc2lhbiBQb3B1bGF0aW9uDQoNCkFyZWFzIHdpdGggaGlnaGVyIHBlcmNlbnRhZ2VzIG9mIEFzaWFuIHBvcHVsYXRpb25zIGdlbmVyYWxseSBleGhpYml0IGxvd2VyIGV2aWN0aW9uIHJhdGVzLiBUaGlzIGluZGljYXRlcyB0aGF0IHByZWRvbWluYW50bHkgQXNpYW4gbmVpZ2hib3Job29kcyBtaWdodCBoYXZlIGJldHRlciBzb2Npby1lY29ub21pYyBjb25kaXRpb25zIG9yIHN1cHBvcnQgc3lzdGVtcyB0aGF0IGhlbHAgbWl0aWdhdGUgZXZpY3Rpb24gcmlza3MuIA0KDQojIyMjIEV2aWN0aW9uIFJhdGUgYnkgUGVyY2VudCBMYXRpbmUgUG9wdWxhdGlvbg0KDQpIaWdoZXIgcGVyY2VudGFnZXMgb2YgTGF0aW5lIHBvcHVsYXRpb25zIGRvIG5vdCBzaG93IGEgY29uc2lzdGVudCBwYXR0ZXJuIHdpdGggZXZpY3Rpb24gcmF0ZXMuIFNvbWUgYXJlYXMgd2l0aCBzaWduaWZpY2FudCBMYXRpbmUgcG9wdWxhdGlvbnMgZXhwZXJpZW5jZSBoaWdoIGV2aWN0aW9uIHJhdGVzLCBpbmRpY2F0aW5nIHRoYXQgc3BlY2lmaWMgbG9jYWxpemVkIGZhY3RvcnMgb3IgZWNvbm9taWMgaGFyZHNoaXBzIGFmZmVjdCB0aGVzZSBjb21tdW5pdGllcy4NCg0KDQpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KIyBBcnJhbmdlIHRoZSBzZWNvbmQgc2V0IG9mIHBsb3RzIGluIGEgZ3JpZA0KZ3JpZC5hcnJhbmdlKA0KICBhcnJhbmdlR3JvYigNCiAgICBncm9icyA9IGxpc3QocGxvdDUsIHBsb3Q2LCBwbG90NywgcGxvdDgsIHBsb3Q5KSwgDQogICAgbmNvbCA9IDINCiAgKQ0KKQ0KDQpgYGANCg0KDQojIyMjIEV2aWN0aW9uIFJhdGUgYnkgR3JhZGUNCg0KQXJlYXMgd2l0aCBsb3dlciBncmFkZXMgKEMgYW5kIEQpIGV4aGliaXQgc2lnbmlmaWNhbnRseSBoaWdoZXIgZXZpY3Rpb24gcmF0ZXMgY29tcGFyZWQgdG8gaGlnaGVyLWdyYWRlZCBhcmVhcyAoQSBhbmQgQikuIFRoaXMgdW5kZXJzY29yZXMgdGhlIGVuZHVyaW5nIGltcGFjdCBvZiByZWRsaW5pbmcsIHdoZXJlIGhpc3RvcmljYWxseSBtYXJnaW5hbGl6ZWQgY29tbXVuaXRpZXMgY29udGludWUgdG8gZmFjZSBoaWdoZXIgZXZpY3Rpb24gcmlza3MuDQoNCiMjIyMgSGlzdG9ncmFtIG9mIEV2aWN0aW9uIFJhdGUNCg0KVGhlIGhpc3RvZ3JhbSByZXZlYWxzIHRoYXQgd2hpbGUgbW9zdCBhcmVhcyBoYXZlIGxvd2VyIGV2aWN0aW9uIHJhdGVzLCB0aGVyZSBhcmUgc2lnbmlmaWNhbnQgcG9ja2V0cyB3aXRoIHZlcnkgaGlnaCByYXRlcy4gVGhpcyBkaXN0cmlidXRpb24gaGlnaGxpZ2h0cyB0aGUgbmVlZCB0byBmb2N1cyByZXNvdXJjZXMgb24gdGhlIG1vc3QgYWZmZWN0ZWQgYXJlYXMgdG8gcHJldmVudCBldmljdGlvbnMgZWZmZWN0aXZlbHkuDQoNCiMjIyMgRGVuc2l0eSBQbG90IG9mIEV2aWN0aW9uIFJhdGUgYnkgR3JhZGUNCg0KSGlnaGVyIEVSQVAgaW5kZXggdmFsdWVzIGFyZSBhc3NvY2lhdGVkIHdpdGggaGlnaGVyIGV2aWN0aW9uIHJhdGVzLiBUaGlzIGluZGljYXRlcyB0aGF0IGFyZWFzIG5lZWRpbmcgbW9yZSByZW50YWwgYXNzaXN0YW5jZSBhbHNvIGV4cGVyaWVuY2UgaGlnaGVyIGV2aWN0aW9uIHJpc2tzLiBIb3dldmVyLCB0aGUgRVJBUCBpbmRleCBhbG9uZSBkb2VzIG5vdCBmdWxseSBwcmVkaWN0IGV2aWN0aW9uIHJhdGVzLCB0aGVyZSBtaWdodCBhIG5lZWQgdG8gbG9vayBvdGhlciBmYWN0b3JzIHRoYXQgcHJlZGljdCBldmljdGlvbi4gDQoNCiMjIyMgRXZpY3Rpb24gUmF0ZSBieSBFUkFQIEluZGV4IFZhbHVlDQoNCk9ic2VydmF0aW9uOiBIaWdoZXIgRVJBUCBpbmRleCB2YWx1ZXMgY29ycmVsYXRlIHdpdGggaGlnaGVyIGV2aWN0aW9uIHJhdGVzLCBlc3BlY2lhbGx5IGF0IHRoZSBoaWdoZXIgZW5kIG9mIHRoZSBpbmRleC4NCg0KRGlmZmVyZW5jZTogVGhlIGNvcnJlbGF0aW9uIGJldHdlZW4gaGlnaCBFUkFQIGluZGV4IHZhbHVlcyBhbmQgZXZpY3Rpb24gcmF0ZXMgaXMgbW9yZSBhcHBhcmVudCBpbiBDaGljYWdvIHRoYW4gaW4gU2VhdHRsZSwgc3VnZ2VzdGluZyB0aGF0IHJlbnRhbCBhc3Npc3RhbmNlIHByb2dyYW1zIG1pZ2h0IGJlIGxlc3MgZWZmZWN0aXZlIGluIHByZXZlbnRpbmcgZXZpY3Rpb25zIGhlcmUuDQoNCiMjIyMgRXZpY3Rpb24gUmF0ZSBieSBNZWRpYW4gR3Jvc3MgUmVudA0KDQpFdmljdGlvbiByYXRlcyB2YXJ5IHNpZ25pZmljYW50bHkgYWNyb3NzIGRpZmZlcmVudCByZW50IGxldmVscy4gV2hpbGUgaGlnaGVyIHJlbnRzIG1pZ2h0IGJlIGV4cGVjdGVkIHRvIGNvcnJlbGF0ZSB3aXRoIGhpZ2hlciBldmljdGlvbiByYXRlcywgdGhlIGRhdGEgc2hvd3MgdGhhdCBsb3ctcmVudCBhcmVhcyBjYW4gYWxzbyBoYXZlIGhpZ2ggZXZpY3Rpb24gcmF0ZXMsIHBvaW50aW5nIHRvIGJyb2FkZXIgc29jaW8tZWNvbm9taWMgaXNzdWVzIGFmZmVjdGluZyBob3VzaW5nIHN0YWJpbGl0eS4NCg0KDQo=